package com.bank.service;

import com.bank.entity.TradeInfo;
import java.util.List;

/**
 * 交易信息服务接口
 */
public interface TradeInfoService {
    /**
     * 查询所有交易信息
     * @return 交易信息列表
     */
    List<TradeInfo> findAll();

    /**
     * 根据卡号查询交易信息
     * @param cardID 卡号
     * @return 交易信息列表
     */
    List<TradeInfo> findByCardId(String cardID);

    /**
     * 新增交易信息
     * @param tradeInfo 交易信息
     * @return 是否成功
     */
    boolean add(TradeInfo tradeInfo);

    /**
     * 删除交易信息
     * @param cardID 卡号
     * @param tradeDate 交易时间
     * @return 是否成功
     */
    boolean delete(String cardID, String tradeDate);

    /**
     * 存款业务：插入交易记录并更新银行卡余额
     * @param tradeInfo 交易信息
     * @return 是否成功
     */
    boolean deposit(TradeInfo tradeInfo);

    /**
     * 取款业务：扣减余额并插入交易记录
     * @param tradeInfo 交易信息
     * @return 是否成功
     */
    boolean withdraw(TradeInfo tradeInfo);

    /**
     * 转账业务：插入两条交易记录并修改两张银行卡余额
     */
    boolean transfer(String sourceCardID, String targetCardID, java.math.BigDecimal amount);
}